今天補上編輯功能,讓打錯字的待辦事項可以直接修改,不用刪掉重來。
今天做的事
後端新增一支PATCH /api/todos/:id,只更新標題欄位,驗證邏輯沿用新增時的規則(不能空白、不能超過 50 字):
app.patch('/api/todos/:id', (req, res) => {
const id = Number(req.params.id);
const title = (req.body.title || '').trim();
if (!title) {
return res.status(400).json({ message: '待辦事項內容不能是空白' });
}
db.run('UPDATE todos SET title = ? WHERE id = ?', [title, id], function (err) {
if (err) return res.status(500).json({ message: '資料庫錯誤' });
if (this.changes === 0) {
return res.status(404).json({ message: '找不到這筆待辦事項' });
}
res.json({ id, title });
});
});
前端在每個項目旁加了「編輯」按鈕,點下去用 prompt() 跳出輸入框,確認後送出 PATCH 請求,成功就直接更新畫面上的文字。
觀察
心得
今天體會到HTTP方法的選擇不只是形式,而是在告訴別人這個API做什麼事。同樣是更新,整筆取代跟局部修改是不同的語意。